package com.neusoft.control;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.neusoft.bean.AdminInfoBean;
import com.neusoft.myutils.MyUtil;
import com.neusoft.service.AdminInfoService;

/**
 * 使用注解的方式配置servlet，参数是映射路径 
 * 注意：注解和web.xml配置只能二选一；不能重复配置 映射路径名要求在当前项目中具有唯一性
 *     servlet是类级别的响应处理
 */
@WebServlet("/AdminLoginServlet")
public class AdminLoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * 进行转发控制处理
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 进行业务逻辑处理
		// 1、使用request对象获取表单数据
		// 将表单的数据赋值给对应的实体类的属性
		// 创建一个实体类对象，用于传输数据（使用实体bean作为数据传输的载体）
		AdminInfoBean adminB = MyUtil.convertRequestParameters2Bean(request, AdminInfoBean.class);
		
		System.out.println("当前登录用户名：" + adminB.getAdminName());
		// 2、调用model层进行业务逻辑处理
		// 根据客户端浏览器输入的用户名和密码作为查询条件，在数据库中查询有没有该记录结果
		List<AdminInfoBean> lstAdminB = MyUtil.getNewInstance(AdminInfoService.class)
				.doAdminLogin(adminB);
		// 3、跳转到视图页面进行结果显示
		// 根据业务逻辑操作的结果，记性视图层的转发控制
		if(lstAdminB != null && lstAdminB.size()>0){
			// 登录成功，跳转到登录成功的页面
			// 将当前登录成功的用户信息，缓存在session中
			request.getSession().setAttribute("loginedAdminInfo", lstAdminB);
			// 转发跳转
			//request.getRequestDispatcher("logined/Logined.jsp").forward(request,
			//		 response);
			response.sendRedirect("logined/Logined.jsp");
		}else{
			// 登录失败
			// 重定向跳转---跳回登录页面重新登录
			response.sendRedirect("login.jsp");
		}
		// 使用转发进行跳转
		// request.getRequestDispatcher("logined/Logined.jsp").forward(request,
		// response);
		// 使用重定向进行跳转		
		//response.sendRedirect("logined/Logined.jsp");
		/*
		 * 转发和重定向的区别：
		 * 转发前后是同一次请求，也就是可以使用request传参。
		 * 重定向前后不是同一次请求，不能使用request传参。
		 * 注意：
		 *    转发或重定向之后，不能再执行其他的代码；
		 */
	}

}
